package com.desaweb.pe.data;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.desaweb.pe.model.Juego;
import com.desaweb.pe.model.Servicio;
import com.desaweb.pe.model.TipoDocumento;
import com.desaweb.pe.model.Usuario;

public class DatabaseManager {
	
	private List<Servicio> servicios;
	private List<Juego> juegos;
	private List<Usuario> usuarios;
	private List<TipoDocumento> tipoDocumentos;
	
	
	
	private static DatabaseManager instance =null;
	public static DatabaseManager getInstance(){
		if(instance == null){
			return new DatabaseManager();
		}
		return instance;
	}
	
	
	private DatabaseManager(){
		
		this.servicios= new ArrayList<Servicio>();
		this.juegos=new ArrayList<Juego>();
		this.usuarios=new ArrayList<Usuario>();
		
		//DUMMY SERVICIOS
		Servicio servicio1 = new Servicio();
		
		servicio1.setCosto(new BigDecimal("12.32"));
		servicio1.setDescripcion("descripcion");
		servicio1.setNombre("nombre");
		servicio1.setId(1);
		
		Servicio servicio2 = new Servicio();
		servicio2.setCosto(new BigDecimal("12.32"));
		servicio2.setDescripcion("descripcion");
		servicio2.setNombre("nombre");
		servicio2.setId(2);
		
		Servicio servicio3 = new Servicio();
		servicio3.setCosto(new BigDecimal("12.32"));
		servicio3.setDescripcion("descripcion");
		servicio3.setNombre("nombre");
		servicio3.setId(3);
		
		Servicio servicio4 = new Servicio();
		servicio4.setCosto(new BigDecimal("12.32"));
		servicio4.setDescripcion("descripcion");
		servicio4.setNombre("nombre");
		servicio4.setId(4);
		
		Servicio servicio5 = new Servicio();
		servicio5.setCosto(new BigDecimal("12.32"));		
		servicio5.setDescripcion("descripcion");
		servicio5.setNombre("nombre");
		servicio5.setId(5);
		
		this.servicios.add(servicio1);
		this.servicios.add(servicio2);
		this.servicios.add(servicio3);
		this.servicios.add(servicio4);
		this.servicios.add(servicio5);
		//
		
		//DUMMY JUEGOS
		
		Juego juego1 = new Juego();
		juego1.setCosto(new BigDecimal("15.30"));
		juego1.setDescripcion("descripcion");
		juego1.setMateriales("material1|material2|material3");
		juego1.setNombre("juego1");
		juego1.setId(1);
		
		Juego juego2 = new Juego();
		juego2.setCosto(new BigDecimal("15.30"));
		juego2.setDescripcion("descripcion");
		juego2.setMateriales("material1|material2|material3");
		juego2.setNombre("juego1");
		juego2.setId(2);
		
		Juego juego3 = new Juego();
		juego3.setCosto(new BigDecimal("15.30"));
		juego3.setDescripcion("descripcion");
		juego3.setMateriales("material1|material2|material3");
		juego3.setNombre("juego1");
		juego3.setId(3);
		
		this.juegos.add(juego1);
		this.juegos.add(juego2);
		this.juegos.add(juego3);
		//
		
		
		//DUMMY USUARIOS
		
		TipoDocumento tipoDocumento = new TipoDocumento();
		tipoDocumento.setDescripcion("DNI");
		
		Usuario usuario1=new Usuario();
		usuario1.setApellidoMaterno("apellido materno");
		usuario1.setApellidoPaterno("apellido paterno");
		usuario1.setCelular("12344124321");
		usuario1.setCorreo("correo@visa.com.pe");
		usuario1.setDireccion("direccion av. alfonso ugarte 145");
		usuario1.setNombres("nombre1");
		usuario1.setPassword("password");
		usuario1.setSexo("M");		
		usuario1.setTipoDocumento(tipoDocumento);
		
		

		Usuario admin=new Usuario();
		admin.setApellidoMaterno("admin admin");
		admin.setApellidoPaterno("admin admin");
		admin.setCelular("12344124321");
		admin.setCorreo("admin@visa.com.pe");
		admin.setDireccion("direccion av. alfonso ugarte 145");
		admin.setNombres("nombre1");
		admin.setPassword("admin");
		admin.setSexo("M");		
		admin.setTipoDocumento(tipoDocumento);
		
		this.usuarios.add(usuario1);
		this.usuarios.add(admin);
		
		
		//
		
	}
		
	
	//OPERATIONS SERVICIOS
	
	public  List<Servicio> obtenerServicios(){		
		return this.servicios;	
	}
	public void grabarServicio(Servicio servicio){
		Integer id=this.servicios.size();
		servicio.setId(id++);
		this.servicios.add(servicio);
	}
	public Servicio obtenerServicio(Integer id){
		Servicio servicioRequest= null;
		
		for (Servicio servicio : this.servicios) {
			if(servicio.getId().equals(id)){
				servicioRequest=servicio;
				break;
			}
		}
		return servicioRequest;
	}
	
	//OPERATIONS JUEGOS
	public List<Juego> obtenerJuegos(){
		return this.juegos;
	}	
	public void grabarJuego(Juego juego){
		Integer id=this.juegos.size();
		juego.setId(id++);
		this.juegos.add(juego);
	}
	public Juego obtenerJuego(Integer id){
		Juego juegoRequest= null;
		
		for (Juego juego : this.juegos) {
			if(juego.getId().equals(id)){
				juegoRequest=juego;
				break;
			}
		}
		return juegoRequest;
	}
	
	//OPERATIONS USUARIOS
		public List<Usuario> obtenerUsuarios(){
			return this.usuarios;
		}	
		public void grabarUsuario(Usuario usuario){
			Integer id=this.usuarios.size();
			usuario.setId(id++);
			this.usuarios.add(usuario);
		}
		public Usuario obtenerUsuario(Integer id){
			Usuario usuarioRequest= null;
			
			for (Usuario usuario: this.usuarios) {
				if(usuario.getId().equals(id)){
					usuarioRequest=usuario;
					break;
				}
			}
			return usuarioRequest;
		}
	
	
}
